package com.mgg.user.service.shop;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.mgg.user.vo.*;
import org.springframework.data.domain.Pageable;

public interface ShopService {

    Boolean isMyLowerShop(Map<String, String> map);

    /**
     * 访问店铺
     * @param shopCode
     */
    void visitShop(String shopCode);

    /**
     * 今日访问量
     * @param shopCode
     * @return
     */
    Integer getTodayVisitNum(String shopCode);

	/**
	 * 店铺信息统计，总销售额，累计收益，月销售额，月收益，会员人数，推荐店主数
	 * @param userId
	 * @param shopCode
	 * @return
	 */
	Map<String, Object> getTutorStatistics(String userId, String shopCode);

	/**
	 * 累计销售额
	 * @param shopCode
	 * @return
	 */
	BigDecimal getTotalSalesAmount(String shopCode);

    /**
     * 本月销售额
     * @param shopCode
     * @return
     */
	BigDecimal getMonthSalesAmount(String shopCode);

    /**
     * 总收入
     * @param userId
     * @return
     */
	BigDecimal getTotalIncome(String userId);

    /**
     * 本月收入
     * @param userId
     * @return
     */
	BigDecimal getMonthIncome(String userId);

    /**
     * 今日收入
     * @param userId
     * @return
     */
    BigDecimal getTodayIncome(String userId);

    /**
     * 今日订单数
     * @param shopCode
     * @return
     */
    Integer getTodayOrderNum(String shopCode);

    /**
     * 会员总数
     * @param userId
     * @return
     */
    Integer countMemberNum(String userId);

    /**
     *
     * @param userId
     * @param page
     * @return
     */
    List<UserSimpleVO> listMember(String userId, Pageable page);

    /**
     * 获取店铺累计销售数据
     * @param shopCode
     * @param roleCode
     * @return
     */
    Map<String,Object> getShopSalesCount(String shopCode, String roleCode);

    /**
     * 推荐店主数（直接+间接）
     * @param shopCode
     * @return
     */
    public Integer countRecdTutorNum(String shopCode);

    /**
     * 直接推荐店主数
     * @param shopCode
     * @return
     */
    public Integer countDirectRecdTutorNum(String shopCode);

    /**
     * 推荐店主列表
     * @param shopCode
     * @param page
     * @return
     */
    List<RecdUserVO> listRecdShopkeeper(String shopCode, Pageable page);

    /**
     * 社群培训
     * @param userId
     * @param roleCode
     * @return
     */
    Map<String,Object> getCommunityInfo(String userId, String roleCode);

    /**
     * 社群直属店主列表
     * @param userId
     * @param shopCode
     * @param page
     * @return
     */
    List<TutorVO> listCommunityDirectTutor(String userId, String shopCode, Pageable page);

    /**
     * 社群直属经理列表
     * @param userId
     * @param shopCode
     * @param page
     * @return
     */
    List<ManagerVO> listCommunityDirectManage(String userId, String shopCode, Pageable page);

    /**
     * 社群业绩统计
     * @param userId
     * @param shopCode
     * @return
     */
    Map<String, Object> getCommunityAchievement(String userId, String shopCode);

    /**
     *
     * @param userId
     * @param shopCode
     * @param date
     * @param page
     * @return
     */
    List<ManagerAchievementVO> listCommunityAchievement(String userId, String shopCode, String date, Pageable page);
}
